﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using vudu.Logica.Clases;
using vudu.EnlaceDatos.SqlServer;
using AjaxControlToolkit;

namespace vudu.PaginasWeb.G6Pensum
{
    public partial class ListarPlanEstudioProfesor : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //Obejto del tipo sesion
            string miRol = (string)Session["rol"];
            if (miRol != "Profesor")
                Response.Redirect("../G3AccesoSistema/InicioSistema.aspx");

            try
            {
                //se recibe el objeto de la session
                Profesor elProfe = (Profesor)Session["Usuario"];
                Escuela miEscuela = new Escuela();
                // se obtiene el id de la escuela con que se relaciona el usuario
                int escuelaTrabaja = elProfe.relacionEscuelaProfesor(elProfe.Cedula);
                nombreProfesor.Text ="Profesor(a): "+ elProfe.Nombre + " " + elProfe.Apellido;
                miEscuela.IdEscuela = escuelaTrabaja;
                Session["idMiEscuela"] = miEscuela.IdEscuela;
                //se muestran los pensum de la escuela con la que se relaciona el usuario
                CargaPensumActivo(miEscuela);
                CargaPensumsInactivos(miEscuela);
            }
            catch (Exception)
            {
                mensaje.Text = "Error: No se puede conectar a la base de datos";
                mensaje.CssClass = "transaccionFallida";
                mensaje.Visible = true;
            }
        }

        //metodo encargado de mostrar el pensum activo de la escuela 
        public void CargaPensumActivo(Escuela miEscuela)
        {
            Pensum elActivo = new Pensum();
            elActivo.IdPensum = miEscuela.ConsultarPensumActivoEscuela(miEscuela);
            elActivo.PeriodosActivos = elActivo.ConsultarPeridosAcademicos(elActivo.IdPensum);

            TableRow fila = new TableRow();
            //se crea el boton que ejecuta la accion de detallar el pensum
            Button btnVerPensum = new Button();
            btnVerPensum.ID = elActivo.IdPensum.ToString();
            btnVerPensum.Text = "Ver Pensum";
            btnVerPensum.CssClass = "boton";
            btnVerPensum.Click += new System.EventHandler(VerPensum);
            TableCell campoBoton = new TableCell();
            campoBoton.Controls.Add(btnVerPensum);
            //se crea la celda donde estaran todos los periodos academicos que estuvo vigente
            TableCell campoCabera = new TableCell();
            Label titulo = new Label();
            titulo.ID = "campoCabera";
            titulo.Text = "Periodos academicos del pensum : " + "<br/>" +
                          ListaPeriodosAcademicos(elActivo.PeriodosActivos);
            campoCabera.Controls.Add(titulo);
            campoCabera.Attributes.Add("style", "padding:5px");
            //se agregan las celdas con su contenido y posteriormente la fila
            fila.Controls.Add(campoCabera);
            fila.Controls.Add(campoBoton);
            TablePensumActivo.Rows.Add(fila);
        }

        //metodo encargado de listar todos los pensum inactivos de la escuela
        public void CargaPensumsInactivos(Escuela miEscuela)
        {
            //lista y guarda todos los pensum inactivos de una escuela
            miEscuela.ListaPensum = miEscuela.ConsultarPensums(miEscuela);
            foreach (Pensum inactivo in miEscuela.ListaPensum)
            {
                inactivo.PeriodosActivos = inactivo.ConsultarPeridosAcademicos(inactivo.IdPensum);
            }

            //aqui se imprime el resiltado obtenido de la busqueda anterior en forma de tabla
            foreach (Pensum elInactivo in miEscuela.ListaPensum)
            {
                String misPeriodosAcademicos = ListaPeriodosAcademicos(elInactivo.PeriodosActivos);
                if (misPeriodosAcademicos != "")
                {
                    //se crea la fila de la tabla
                    TableRow fila = new TableRow();
                    Button btnVerPensum = new Button();
                    btnVerPensum.ID = elInactivo.IdPensum.ToString();
                    btnVerPensum.Text = "Ver Pensum";
                    btnVerPensum.CssClass = "boton";
                    btnVerPensum.Click += new System.EventHandler(VerPensum);
                    //se crea la celda donde estara el boton
                    TableCell campoBoton = new TableCell();
                    campoBoton.ID = "campoBoton" + (elInactivo.IdPensum * 2).ToString();
                    campoBoton.Controls.Add(btnVerPensum);
                    //se crea la celda donde estaran todos los periodos academicos que estuvo vigente
                    TableCell campoCabera = new TableCell();
                    Label titulo = new Label();
                    titulo.ID = "campoCabecera" + (elInactivo.IdPensum * 2).ToString();
                    titulo.Text = "Periodos academicos que tuvo en vigencia : " + "<br/>" + misPeriodosAcademicos;
                    campoCabera.Controls.Add(titulo);
                    campoCabera.Attributes.Add("style", "padding:5px");
                    //se agregan las celdas con su contenido y posteriormente la fila
                    fila.Controls.Add(campoCabera);
                    fila.Controls.Add(campoBoton);
                    TablePensumInactivo.Rows.Add(fila);
                }
            }
        }

        //metodo encargado de ejecutar la accion del boton
        public void VerPensum(object sender, EventArgs e)
        {
            Button botonPresionado = (Button)sender;
            Session["idMiPensum"] = Convert.ToInt32(botonPresionado.ID);
            Response.Redirect("../G6Pensum/ConsultarPlanEstudioProfesor.aspx");
        }

        //metodo encargado de listar y concatenar los periodos academicos para ser impresos en formato html
        public string ListaPeriodosAcademicos(List<String> misPeriodosVigentes)
        {
            String fechaPeriodoAcademico = "";
            foreach (String i in misPeriodosVigentes)
            {
                fechaPeriodoAcademico = fechaPeriodoAcademico + i + "<br/>";

            }
            return fechaPeriodoAcademico;
        }
    }
}